################# Обновление PromUC ################# Обновление установочных файлов ============================== Обновление установочных файлов проводится посредством запуска скрипта ``upgrade.sh``, который располагается в корневом каталоге дистрибутива, а также его можно скачать с адреса https://download.promuc.ru/upgrade.sh: .. code-block:: console # cd /opt/promuc # wget --no-check-certificate https://download.promuc.ru/upgrade.{sh,sh.sha256} # shasum -c upgrade.sh.sha256 upgrade.sh: OK Краткую справку скрипта можно вызвать запустив с ключом ``-h``: .. code-block:: console # /opt/promuc/upgrade.sh -h Скрипт обновления установки Promuc Запуск: upgrade.sh -h | -d | [-r] -f -f - файл дистрибутива для обновления -d - скачать дистрибутив для обновления -r - восстановление из указанного файла -h - вызов этой справки Для выполнения обновления скрипту необходимо передать путь и имя файла дистрибутива. Можно использовать как облегчённый вариант дистрибутива, так и полный. Например: .. code-block:: console # ./upgrade.sh -f ../promuc-debian.tar.gz или # ./upgrade.sh -f /opt/promuc-full-debian.tar.gz Если использовать опцию ``-d``, то будет выполнено скачивание дистрибутива с сайта: .. code-block:: console # ./upgrade.sh -d Внимание! данный скрипт заменит существующие установочные файлы в /opt/promuc и пересоздаст контейнеры PromUC. Будет создана резервная копия заменяемых файлов в /opt/promuc/install/. Для восстановления предыдущей версии используйте upgrade.sh -r -f <имя файла>. Скачиваем файл дистрибутива, без docker-образов (1) или полный (2): 1 Файл дистрибутива будет сохранён в /opt/promuc-debian.tar.gz Обнаружен файл дистрибутива /opt/promuc-debian.tar.gz, будет переименован в /opt/promuc-debian.tar.gz.old В ходе выполнения скрипта проводится сравнение версий установленного комплекса и дистрибутива, сравнение хэш-сумм установочных файлов. Если используется полный дистрибутив, то дополнительно будут сравнены файлы docker-образов сервисов. Перед заменой файлов будет произведено резервное копирование в файл ``./install/upgrade_<Дата>.tar.gz``: .. code-block:: text Получаем дистрибутив c адреса https://download.promuc.ru/promuc-debian.tar.gz ######################################################################## 100.0% Распаковываем дистрибутив в /tmp/upgrade Исходный файл содержит версию v1.4, используемая версия v1.3.3 Будут заменены файлы: upgrade.sh version doc/install.sh framework/install.sh gitea/install.sh pgadmin/install.sh portainer/install.sh proxy/cert.sh proxy/install.sh rabbitmq/install.sh ruleengine/install.sh scada/docker-compose.yml scada/install.sh updater/install.sh Резервные копии заменяемых файлов будут сохранены в /opt/promuc/install/upgrade_221101122721.tar.gz Для их восстановления используйте команду /opt/promuc/upgrade.sh -r /opt/promuc/install/upgrade_221101122721.tar.gz Внимание! Требуется пересоздание контейнеров сервисов, т.к. планируются изменения в файлах сервисов или в docker-образах. Продолжаем? (y/n): .. warning:: В случае необходимости обновления установочных файлов сервисов или их файлов docker-образов обязательно будет выполняться пересоздание контейнеров образов, это не затрагивает данные. При обновлении docker-образов сервисов PromUC будет выполнено сравнение метки даты создания образа и в случае если загружаемый образ создан ранее используемого необходимо будет подтвердить замену. При отказе будет восстановлен ранее используемый образ: .. code-block:: console Загружаем обновлённые docker-образы... Обновляем docker-образ psm/promuc-scada Уже имеется загруженный docker-образ psm/promuc-scada:latest c id a630502d9a86, проверяем даты создания... The image psm/promuc-scada:latest already exists, renaming the old one with ID sha256:a630502d9a8634abbff2c200861cd071a102a1df34c0f5d77e7b576ebd5dd370 to empty string Loaded image: psm/promuc-scada:latest Внимание! В файле содержится образ psm/promuc-scada предыдущей версии. Использовать его? (y/n): n Образ a630502d9a86 восстановлен в psm/promuc-scada:latest Файл docker-образа восстановлен в /opt/promuc/images/psm_promuc-scada.bz2 По окончании будет предложено запустить сервисы если они были остановлены во время обновления. Восстановление установочных файлов ================================== Для отката изменений, восстановления установочных файлов необходимо запустить скрипт ``upgrade.sh`` с ключами ``-r -f ``: .. code-block:: console # ./upgrade.sh -f /opt/promuc/install/upgrade_221101123321.tar.gz -r Будет выполнено восстановление файлов из резервной копии /opt/promuc/install/upgrade_221101130531.tar.gz в /opt/promuc. Контейнеры сервисов будут пересозданы. Продолжаем? (y/n): y Проверяем целостность архива... Будут восстановлены файлы: doc/install.sh framework/install.sh scada/install.sh version Будут восстановлены docker-образы: images/psm_ruleengine-transport.bz2 images/psm_promuc-doc.bz2 Продолжаем? (y/n): .. note:: При восстановлении резервное копирование не выполняется. Обновление сервисов =================== Обновление сервисов проводится посредством запуска скрипта ``update.sh`` с указанием конкретного сервиса (папка сервиса). Например: .. code-block:: text # ./update.sh framework Получаем файл с psm/promuc_framework:latest Получаем psm/promuc_framework:latest с сайта https://download.protei-sm.ru ########################################################################################## 100.0% Импортируем образ psm/promuc_framework:latest в docker... Loaded image: psm/promuc_framework:latest Рестартуем сервис framework Выполнение docker compose up -d для framework...OK Скрипт получает docker-образ с сайта https://download.protei-sm.ru посредством скрипта ``getimages.sh``, сохраняет в папку ``images`` и пересоздаёт контейнер сервиса с новым образом. .. note:: Если полученный с сайта образ соответствует уже загруженному в docker, то контейнер не пересоздаётся. Обновление docker-образов ========================= В случае необходимости проведения самостоятельного или поэтапного обновления возможно получение отдельного обновлённого docker-образа сервиса с сайта https://download.protei-sm.ru или иного указанного в переменной ``PROMUC_DOWNLOAD_URL`` в корневом файле ``.env``. В этом случае полученный файл docker-образа сохраняется с заменой существующего файла в папке ``images`` и подгружается в docker, контейнер сервиса при этой операции не пересоздаётся. Версия docker-образа сервиса указывается посредством переменной ``_TAG`` в файле ``.env`` каталога сервиса. Для получения образа необходимо запустить скрипт ``getimages.sh`` с указанием наименования docker-образа, нескольких образов (разделяя пробелом) или без указания для получения образов всех сервисов. Например: .. code-block:: text root@vpn1:/opt/services# ./getimage.sh -p psm/promuc_framework:latest Получаем образ psm/promuc-framework:latest % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 39.4M 100 39.4M 0 0 88.9M 0 --:--:-- --:--:-- --:--:-- 88.7M Loaded image: psm/promuc-framework:latest .. note:: Флаг ``-p`` включает принудительную загрузку файла docker-образа с сайта независимо от наличия в папке ``images``. .. list-table:: Используемые docker-образы :widths: 10 10 :header-rows: 1 * - **Сервис** - **Файл docker-образа** * - proxy - traefik:v2.11.13 * - postgres - timescale/timescaledb-ha:pg14.10-ts2.12.2-all * - redis - redis:7.2 * - rabbitmq - rabbitmq:3.13-management * - framework - psm/promuc_framework:latest * - gitea - psm/gitea:latest * - ruleengine - psm/promuc_flow:latest, psm/ruleengine:latest, psm/ruleengine-transport:latest * - updater - psm/updater:latest Порядок проверки состояния сервисов =================================== Чтобы проверить состояние сервисов можно воспользоваться стандартными командами ``docker`` или скриптом ``do.sh``: .. code-block:: console # ./do.sh framework ps Выполнение docker compose ps для framework... NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS framework psm/promuc_framework:latest "/usr/sbin/lighttpd …" framework 56 minutes ago Up 56 minutes 80/tcp, 9595-9599/tcp